package edu.utn.tacs.grupouno.negocio;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public abstract class AbstractDiaFactory implements DiaFactory {

	@Override
	public Dia getDia(Date fecha) {
		fecha = limpiarFecha(fecha);
		List<Turno> turnos = getTurnosAsignados(fecha);
		if (turnos == null)
			turnos = new ArrayList<Turno>();
		Dia retval = new Dia(fecha);
		retval.setTurnos(turnos);
		completarTurnosDisponibles(retval);
		return retval;
	}
	
	protected abstract void completarTurnosDisponibles(Dia retval);

	protected abstract List<Turno> getTurnosAsignados(Date fecha);

	protected Date limpiarFecha(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.HOUR, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTime();
	}
}
